package com.common.utils;

import com.common.enums.ResultEnum;
import com.common.pojo.vo.ResultVO;

/**
 * @Brief 返回数据封装工具类
 * @Author chenyl
 * @Date 2023-08-01
 * @Version 1.0.0
 */
public class ResultUtil {
    /**
     * 返回成功
     *
     * @return ResultVO对象
     */
    public static ResultVO<Void> success() {
        return new ResultVO<>(ResultEnum.SUCCESS);
    }

    /**
     * 返回成功
     *
     * @param data 需返回的数据
     * @param <T>  实体对象
     * @return ResultVO对象
     */
    public static <T> ResultVO<T> success(T data) {
        ResultVO<T> result = new ResultVO<>(ResultEnum.SUCCESS);
        result.setData(data);
        return result;
    }

    /**
     * 返回失败
     *
     * @return ResultVO对象
     */
    public static ResultVO<Void> fail() {
        return new ResultVO<>(ResultEnum.FAIL);
    }

    /**
     * 返回失败
     *
     * @param resultEnum 通用返回编码枚举类
     * @return ResultVO对象
     */
    public static ResultVO<Void> fail(ResultEnum resultEnum) {
        return new ResultVO<>(resultEnum);
    }

    /**
     * 返回失败
     *
     * @param message 自定义消息
     * @return ResultVO对象
     */
    public static ResultVO<String> fail(String message) {
        ResultVO<String> result = new ResultVO<>(ResultEnum.FAIL);
        result.setMessage(message);
        return result;
    }
}
